package com.example.leetcode.c501_c600.c557;
/**
 * 给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。
 *
 *  
 *
 * 示例：
 *
 * 输入："Let's take LeetCode contest"
 * 输出："s'teL ekat edoCteeL tsetnoc"
 *  
 *
 * 提示：
 *
 * 在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外的空格。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */


/** 反转字符串中的单词 III
 * @author zhanpengguo
 * @date 2020-08-30 19:03
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.reverseWords("1 "));
    }

    public String reverseWords(String s) {
        if (s == null || s.equals("") || "".equals(s.trim())) {
            return s;
        }
        String[] arr = s.split(" ");
        String[] resArr = new String[arr.length * 2 - 1];
        for (int i = 0; i < arr.length; i++) {
            String now = arr[i];
            char[] chars = new char[now.length()];
            int cj = 0;
            for (int j = now.length() - 1; j >= 0 ; j--) {
                chars[cj] = now.charAt(j);
                cj++;
            }
            String value = String.valueOf(chars);
            resArr[i * 2] = value;
            if (i != arr.length - 1) {
                resArr[i * 2 + 1] = " ";
            }
        }
        StringBuilder sb = new StringBuilder();
        for (String s1 : resArr) {
            sb.append(s1);
        }
        for (int i = s.length() -1; i >= 0; i--) {
            if (s.charAt(i) == ' ') {
                sb.append(" ");
            } else {
                return sb.toString();
            }
        }
        return sb.toString();
    }
}
